package com.example.demo.io;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * FileInputStream 用于读取源文件的字节数据。
 * FileOutputStream 用于写入目标文件的字节数据。
 * 使用一个缓冲区（byte[] buffer）来逐块读取和写入数据，这样可以提高效率。
 * 使用 try-with-resources 语法可以自动关闭流，避免资源泄漏。
 */
public class FileCopyExample {
    public static void main(String[] args) {
        // 源文件路径
        String sourceFilePath = "D:\\workspece\\springboot\\output.txt";
        // 目标文件路径
        String targetFilePath = "D:\\workspece\\springboot\\target.txt";

        // 使用FileInputStream和FileOutputStream来复制文件
        try (FileInputStream fis = new FileInputStream(sourceFilePath);
             FileOutputStream fos = new FileOutputStream(targetFilePath)) {

            byte[] buffer = new byte[1024]; // 缓冲区大小为1024字节
            int length;

            // 逐块读取并写入
            while ((length = fis.read(buffer)) != -1) {
                fos.write(buffer, 0, length);
            }

            System.out.println("文件复制完成！");
        } catch (FileNotFoundException e) {
            System.out.println("文件未找到：" + e.getMessage());
        } catch (IOException e) {
            System.out.println("复制文件时发生错误：" + e.getMessage());
        }
    }
}
